package drds.binlog.binlog_task;

import drds.binlog.common.Authors;
import drds.binlog.common.LifeCycle;
import drds.binlog.common.position.ClientInfo;
import drds.binlog.metadata.IMetaDataManager;
import drds.binlog.parse.IEventParser;
import drds.binlog.sink.IEntrySink;
import drds.binlog.store.IEventStore;
import drds.common.Author;

/**
 * 代表单个canal实例，比如一个destination会独立一个实例
 */
@Author(name = Authors.LI_YANG)
public interface IBinlogTask extends LifeCycle
{

    String getDestination();

    /**
     * 客户端发生订阅/取消订阅行为
     */
    boolean subscribeChange(ClientInfo clientInfo);

    IMetaDataManager getMetaDataManager();


    IEventParser getEventParser();

    IEntrySink getEventSink();

    IEventStore getEventStore();


}
